package com.yeban.javase.day06.test04_localtime.test09;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Comparator;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/10/14
 *
 * 9.学生类：姓名，学号，出生日期  三个属性。找出比 “张三” 大的所有同学信息。
 */
public class test09 {

    public static void main(String[] args) {
        Student[] stus = new Student[10];
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        StudentName[] allStuNames = StudentName.values();

        for (int i = 0; i < stus.length; i++) {
            stus[i] = new Student();

            stus[i].setName(allStuNames[i].getName());  // 姓名
            stus[i].setNum(2022001 + i);                // 学号

            int year = (int)(Math.random() * 3 + 2004);        // 同班上下两岁
            int month = (int)(Math.random() * 12 + 1);      // 1-12月份
            int day = (int)(Math.random() * 28 + 1);    // 1-28天

            String monthStr = (month < 10)? "0" + month : String.valueOf(month);
            String dayStr = (day < 10)? "0" + day : String.valueOf(day);

            String birthdayStr = String.valueOf(year + "-" + monthStr + "-" + dayStr);

            stus[i].setBirthDay(birthdayStr);
        }

//        Arrays.sort(stus, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                LocalDate localDate1 = LocalDate.parse(o1.getBirthDay(), formatter);
//                LocalDate localDate2 = LocalDate.parse(o2.getBirthDay(), formatter);
//
//                return localDate2.compareTo(localDate1);    // 逆序排序
//            }
//        });
        LocalDate zsBirth = null;
        // 找到张三的生日
        for (Student stu : stus) {
            if(stu.getName().equals("张三")) {
                zsBirth = LocalDate.parse(stu.getBirthDay(),formatter);
                break;
            }
        }

        System.out.println("---------- 本班同学信息 ----------");
        for(Student stu : stus) {
            System.out.println(stu);
        }

        System.out.println("\n---------- 比张三大的同学 ----------");
        for (Student stu : stus) {
            if(!stu.getName().equals("张三")) {
                LocalDate stuBirth = LocalDate.parse(stu.getBirthDay(),formatter);
                if(stuBirth.isBefore(zsBirth)) {
                    System.out.println(stu);
                }
            }
        }


    }
}
